Existing communications applications tend to create islands of users that do not always efficiently communicate with each other. In order to efficiently communicate, the communication applications often require expensive pair-wise federation among application providers. Moreover, with existing applications, the parties of the communication session are typically locked into static communication modes, applications, and communication devices when a communication session is initiated. If the party initiates a voice call, the call is typically routed to a voice communication device. This can lead to less than optimal communications between a calling party and a called party. For example, if a called party is not available via voice, the communication session may not be completed even though the called party may be available through a different communication medium.
To overcome this problem, some present day communication applications are capable of determining presence information of a called party. For example, if a call is made to the called party's desktop telephone, the call may be re-routed to the called party's cell phone based on the called party being present at the cell phone and not present at the desktop telephone. While this type of service does provide more efficient communications, it still falls short in many instances because the called party cannot be reached effectively.